1. Field of the Invention
This invention relates generally to a memory or storage device for storing a sequence of occurances which initiate machine operations, and more particularly to such a device which can be employed to program a machine which is controlled by an input terminal, such as a keyboard, and to a method of storing information in and retrieving information from such a device.
2. Prior Art
Programmers are employed for storing information corresponding to a series of sequential functions to be or being performed by a machine or information corresponding to instructions for performing such functions. A great majority of these machines which can be controlled from a stored program are operated by a keyboard. Examples of such machines include calculators, numerical control machines, and process controllers. Generally, each key of the keyboard represents either a function to be performed or a numerical value related to a function to be performed. For purposes of this description, however, keys which correspond to numerical values will be considered, along with those keys which correspond to machine functions, as function keys. Present day calculators, for example, are capable of employing the same key to represent either a numerical value or a machine function. When a machine is provided with programming capability, its keyboard also includes control keys for controlling the operation of the programmer.
When key closures correspond to functions to be performed by a machine, that machine must be capable of translating those key closures into information which it temporarily stores and can interpert as an instruction for performing that function. Accordingly, each word of stored instruction information represents a particular function to be performed by that machine, and each such word is in the form of an instruction code unique to each particular machine. It has been the practice in the past to store that information to form a program which can subsequently be accessed to control the operation of the machine. Accordingly, prior known programmers have been designed to store information corresponding to a function represented by a key closure. However, if such programmers are to be employed with more than one type of machine, the operations or functions of those machines must be identical for the programmer unit to correctly recognize the information. That is, since the instruction code corresponding to a particular function of one machine usually differs from the instruction code of another machine corresponding to the same function, a particular programmer designed to recognize and store the instruction codes of one machine may not be able to recognize and store the instruction codes of the other machine to form a useable program.
In the electronic calculators, for example, the arithmetic unit of that calculator must be able to recognize the function of a key which has been depressed in order to perform an arithmetic operation in accordance with that function. Generally, when a key is closed, an instruction code or word is generated which initiates a subroutine for performing the function represented by that key. Prior know programmers have been employed for storing the instruction codes or words supplied to the arithmetic unit of the calculator so that it can subsequently duplicate that instruction code or word to reinitiate the same subroutine. However, the instruction code for initiating a particular subroutine in one machine will initiate an entirely different subroutine in a different machine. One type of electronic calculator, for example, may employ a key at one location on the keyboard for initiating a trigonometric function and an other machine may employ a key at the same location to initiate a conversion function or subroutine. Accordingly, prior known programmers are not capable of being employed with more than one type of machine and are, therefore, not interchangeable.
In addition, most programmer units are designed to accept information generated at some point within a machine which is removed from the input terminal or keyboard thereof. This is considered desirable, since the data reduction accomplished by the input logic circuitry of the machine is utilized to reduce the amount of information required to be stored by a programmer. However, the input logic circuitry of each different type of machine is usually designed to take advantage of certain characteristics of that machine. As an example, one type of calculator which is known does not convert switch line information from its associated keyboard into a stored instruction code, but simply employs that information temporarily. A programmer for that calculator must be designed to recognize this method of handling information within the calculator. However, the same programmer would not be able, without modification, to accept information from a machine which did not employ this information handling technique. Accordingly, it can be appreciated that prior known programmers have been designed as dedicated components of a total system and are, therefore, not universal in their usage with various types of machines.
It has also been the practice in the past to design programmer units as an integral part of the associated controlled machine. Generally, the designer of such a programmer unit also relies upon the input logic circuitry of the controlled machine which recognizes a key closure to reduce the amount of storage required by the programmer unit to store a program. As a result, such prior known programmers are dedicated to the particular machine for which they are designed.
It has been the practice in the past to employ random access memories (RAM) as the memory or storage units for storing instruction codes in programmer units. As is well known, counters are required for generating input and output addresses for such random access memories. It can be appreciated that the elimination of such counters would reduce the amount of circuitry required and would greatly facilitate implementation of the device. Such reduction of the required circuitry and ease of implementation would reduce the cost of such a programmer. The use of random access memories does not permit an increase in the size of the storage capacity of the unit without changing the logic employed for controlling the addressing counters and the logic employed for addressing the memories.
Such prior known programmer units also require continuous synchronization with the machines with which they are associated. In this respect, such programmers have relied on timing control generated by the associated machine, or have required separate clocks or oscillators synchronized with the timing means of the associated machines. In either case, some of such programmers required external timing means which synchronize the operations of the programmer with the associated machine. The external use of such devices is, of course, undersirable.
Some of the prior known programmer units are not capable of permitting a stored program to be edited. Other types of programmer units are not capable of storing and accessing more than one program. In addition, because of the integral design of prior known programmer units with their associated arithmetic unit, such programmer units have not been capable of being self-cleaning feature, however, generally require a relatively large timing device for permitting such a clearing operation to take place before any further operations are initiated therein. Such a large timing device generally involves a capacitor which, because of its size, cannot be formed as an integrated circuit.
Accordingly, it can be appreciated that a need exists for a programmer unit which can be employed with any keyboard operated machine and is interchangeable from one type of machine to another type of machine. In this respect, it can be appreciated that a need exists for such a programmer unit which is not an integral part of the arithmetic unit of the machine, such that it can be self-contained to permit it to be employed wih other types of machines. A need also exists for such a programmer unit which does not require random access memories for storing instruction codes, thereby eliminating the requirement for counters and the like components.